//---------------------------------------------------------------------------

#ifndef CCompteurH
#define CCompteurH
//---------------------------------------------------------------------------
#include "Outils.h"
#include "buttons.hpp"
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Comctrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE_OUTILS CCompteur : public TCustomPanel
{
private:
    int m_nValeur;
    int m_bUpDown;
    int m_nMin;
    int m_nMax;
    int m_nIncrement;
    TImage *iNombres;
    TImage *iImage;
    TSpeedButton *ButtonUp;
    TSpeedButton *ButtonDown;
    int nTailleX;
    int nTailleY;
    TNotifyEvent FOnChange;
    TNotifyEvent FOnClickUp;
    TNotifyEvent FOnClickDown;

private:
    // Fonction principale d'affichage de la valeur
    void __fastcall AfficheNombre();
    // Click sur le bouton UpDown => Changement de nValeur
    void __fastcall UpClick(TObject *Sender);
    void __fastcall DownClick(TObject *Sender);

    void __fastcall AffecteUpDown( void );
    // Accesseurs de Valeur
    void __fastcall SetValeur( int n );
    int  __fastcall GetValeur( void ) const { return m_nValeur; };
    // Accesseurs de UpDown
    void __fastcall SetUpDown( bool b );
    bool __fastcall GetUpDown( void ) const { return m_bUpDown; };
    // Accesseurs de Increment
    void __fastcall SetIncrement( int n );
    int  __fastcall GetIncrement( void ) const { return m_nIncrement; };
    // Accesseurs de Min
    void __fastcall SetMin( int n );
    int  __fastcall GetMin( void ) const { return m_nMin; };
    // Accesseurs de Max
    void __fastcall SetMax( int n );
    int  __fastcall GetMax( void ) const { return m_nMax; };
    // Fonction lancee lors du changement de la valeur
    void __fastcall Change()    { if (FOnChange != NULL)      FOnChange(this); };
    void __fastcall ClickUp()   { if (FOnClickUp != NULL)     FOnClickUp(this); };
    void __fastcall ClickDown() { if (FOnClickDown != NULL)   FOnClickDown(this); };

protected:
public:
    // Constructeur
    __fastcall CCompteur(TComponent* Owner);
    // Destructeur
    virtual __fastcall ~CCompteur();
__published:
    // Propriétés
    __property int Valeur = { read = GetValeur, write = SetValeur, default = 0 };
    __property bool UpDown = { read = GetUpDown, write = SetUpDown, default = false };
    __property int Increment = { read = GetIncrement, write = SetIncrement, default = 1 };
    __property int Min = { read = GetMin, write = SetMin, default = 0 };
    __property int Max = { read = GetMax, write = SetMax, default = MaxInt };
    __property AutoSize = { default = true };
    __property TNotifyEvent OnCChange   = {read=FOnChange,    write=FOnChange};
    __property TNotifyEvent OnClickUp   = {read=FOnClickUp,   write=FOnClickUp};
    __property TNotifyEvent OnClickDown = {read=FOnClickDown, write=FOnClickDown};
};
//---------------------------------------------------------------------------
#endif
